#Importing the required datasets for analysis
fifa_data=readr::read_csv("C:\\Users\\krishna\\Desktop\\PROJECT\\2020SEPT\\fifa_project.csv")
Parsed with column specification:
cols(
  Player = col_character(),
  age = col_double(),
  nationality = col_character(),
  club = col_character(),
  overall = col_double(),
  potential = col_double(),
  value_eur = col_double(),
  wage_eur = col_double(),
  player_positions = col_character(),
  contract_valid_until = col_double(),
  pace = col_double(),
  shooting = col_double(),
  passing = col_double(),
  dribbling = col_double(),
  defending = col_double(),
  physic = col_double()
)
library(dplyr)


#Creating league for teams

bundesliga <- c(
  "SC Paderborn 07", "1. FSV Mainz 05", "Bayer 04 Leverkusen", "FC Bayern München",
  "Borussia Dortmund", "Borussia Mönchengladbach", "Eintracht Frankfurt",
  "FC Augsburg", "FC Schalke 04", "Fortuna Düsseldorf", "1. FC Union Berlin",
  "Hertha BSC", "RB Leipzig", "SC Freiburg", "TSG 1899 Hoffenheim",
  "1. FC Köln", "VfL Wolfsburg", "SV Werder Bremen"
)

premierLeague <- c(
  "Arsenal", "Bournemouth", "Brighton & Hove Albion", "Burnley",
  "Norwich City", "Chelsea", "Crystal Palace", "Everton", "Sheffield United",
  "Aston Villa", "Leicester City", "Liverpool", "Manchester City",
  "Manchester United", "Newcastle United", "Southampton", 
  "Tottenham Hotspur", "Watford", "West Ham United", "Wolverhampton Wanderers"
  
)

laliga <- c(
  "Athletic Club de Bilbao", "Atlético Madrid", "CD Leganés",
  "Deportivo Alavés", "FC Barcelona", "Getafe CF", 
  "Levante UD", "RC Celta", "RCD Espanyol", 
  "Real Betis", "Real Madrid", "Real Sociedad", "Real Valladolid CF",
  "SD Eibar", "Sevilla FC", "Valencia CF", "Villarreal CF",
  "CA Osasuna","Granada CF","RCD Mallorca"
)

seriea <- c(
  "Atalanta","Bologna","Cagliari", "Fiorentina","Genoa",
  "Inter","Juventus","Lazio","Milan","Napoli","Parma","Roma","Sampdoria","Sassuolo","SPAL",
  "Torino","Udinese","Brescia","Leece","Hellas Verona"
  
)


ligue1 <- c(
  "Amiens SC", "Angers SCO", "AS Monaco", "AS Saint-Étienne", "Dijon FCO", "FC Metz",
  "FC Nantes", "FC Girondins de Bordeaux", "LOSC Lille", "Montpellier HSC", "Nîmes Olympique", 
  "OGC Nice", "Olympique Lyonnais","Olympique de Marseille", "Paris Saint-Germain", 
  "RC Strasbourg Alsace", "Brest", "Stade de Reims", "Stade Rennais FC", "Toulouse Football Club"
)
temp=fifa_data %<>% mutate(League = if_else(club %in% bundesliga, "Bundesliga",
                                  if_else(club %in% premierLeague, "Premier League", 
                                          if_else(club %in% laliga, "La Liga", 
                                                  if_else(club %in% seriea, "Serie A", 
                                                                  if_else(club %in% ligue1, "Ligue 1",NA_character_))))),
                 
                 Country = if_else(League == "Bundesliga", "Germany",
                                   if_else(League == "Premier League", "UK",
                                           if_else(League == "La Liga", "Spain", 
                                                   if_else(League == "Serie A", "Italy", 
                                                           if_else(League == "Ligue 1", "France", NA_character_)))))) %>% 
  filter(!is.na(League)) %>% mutate_if(is.factor, as.character())


rm(bundesliga, premierLeague, laliga, seriea, ligue1)
# 5. Position Class -------------------------------------------------------
library(dplyr)
library(magrittr)
# Create Position Class #
defence <- c("CB", "RB", "LB", "LWB", "RWB", "LCB", "RCB")
midfielder <- c("CM", "CDM","CAM","LM","RM", "LAM", "RAM", "LCM", "RCM", "LDM", "RDM")

temp %<>% mutate(Class = if_else(player_positions %in% "GK", "Goal Keeper",
                                 if_else(player_positions %in% defence, "Defender",
                                         if_else(player_positions %in% midfielder, "Midfielder", "Forward"))))

rm(defence, midfielder)

To change values to characters

#Formatting nos to currncy
val<- function(x) {
  dplyr::case_when(
      x < 1e3 ~ as.character(x),
      x < 1e6 ~ paste0(as.character(x/1e3), "K"),
      x < 1e9 ~ paste0(as.character(x/1e6), "M"),
      TRUE ~ "To be implemented..."
  )
}
test=val(temp$value_eur)
val1<- function(y) {
  dplyr::case_when(
      y < 1e3 ~ as.character(y),
      y < 1e6 ~ paste0(as.character(y/1e3), "K"),
      y < 1e9 ~ paste0(as.character(y/1e6), "M"),
      TRUE ~ "To be implemented..."
  )
}
test1=val1(temp$wage_eur)
temp1=temp  %>% 
  mutate(
    Value=val(temp$value_eur),
    Wages=val1(temp$wage_eur)
  )
#choosing currencries as euros
temp1 %>% 
  dplyr::select(Value,Wages) %>%
  gt() %>%
  fmt_currency(
    columns = vars(Value),
    currency = "EUR"
  ) %>%
  fmt_currency(
    columns = vars(Wages),
    currency = "EUR"
  )
Error: The `fmt_currency()` function can only be used on `columns` with numeric data
 temp1 %>% arrange(Player) %>% mutate(Player = paste0(as.character(Player)))
write.csv(temp1,"C:\\Users\\krishna\\Desktop\\PROJECT\\2020SEPT\\FIFA.csv")
df=read.csv("C:\\Users\\krishna\\Desktop\\PROJECT\\2020SEPT\\FIFA.csv")
View(df)
library(plotly)
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     

Attaching package: 㤼㸱plotly㤼㸲

The following object is masked from 㤼㸱package:formattable㤼㸲:

    style

The following object is masked from 㤼㸱package:ggplot2㤼㸲:

    last_plot

The following object is masked from 㤼㸱package:stats㤼㸲:

    filter

The following object is masked from 㤼㸱package:graphics㤼㸲:

    layout
fig <- plot_ly(
    type = 'scatterpolar',
    fill = 'toself'
  ) 
fig <- fig %>%
  add_trace(
    r = c(39, 28, 8, 7, 28, 39),
    theta = c('A','B','C', 'D', 'E', 'A'),
    name = 'Group A'
  ) 
fig <- fig %>%
  add_trace(
    r = c(1.5, 10, 39, 31, 15, 1.5),
    theta = c('A','B','C', 'D', 'E', 'A'),
    name = 'Group B'
  ) 
fig <- fig %>%
  layout(
    polar = list(
      radialaxis = list(
        visible = T,
        range = c(0,50)
      )
    )
  )

fig
No scatterpolar mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
No scatterpolar mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
`arrange_()` is deprecated as of dplyr 0.7.0.
Please use `arrange()` instead.
See vignette('programming') for more help
This warning is displayed once every 8 hours.
Call `lifecycle::last_warnings()` to see where this warning was generated.No scatterpolar mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
No scatterpolar mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
No scatterpolar mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
No scatterpolar mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode

fig <- plot_ly(
    type = 'scatterpolar',
    r = c( 88,96),
    theta = c(temp$overall,temp$potential),
    fill = 'toself'
  ) 
fig <- fig %>%
  layout(
    polar = list(
      radialaxis = list(
        visible = T,
        range = c(0,100)
      )
    ),
    showlegend = F
  )

fig
No scatterpolar mode specifed:
  Setting the mode to markers
  Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
Error: Tibble columns must have compatible sizes.
* Size 2: Column `r`.
* Size 5414: Column `theta`.
i Only values of size one are recycled.
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KYGBge3J9DQojSW1wb3J0aW5nIHRoZSByZXF1aXJlZCBkYXRhc2V0cyBmb3IgYW5hbHlzaXMNCmZpZmFfZGF0YT1yZWFkcjo6cmVhZF9jc3YoIkM6XFxVc2Vyc1xca3Jpc2huYVxcRGVza3RvcFxcUFJPSkVDVFxcMjAyMFNFUFRcXGZpZmFfcHJvamVjdC5jc3YiKQ0KbGlicmFyeShkcGx5cikNCmBgYA0KDQpgYGB7cn0NCg0KDQojQ3JlYXRpbmcgbGVhZ3VlIGZvciB0ZWFtcw0KDQpidW5kZXNsaWdhIDwtIGMoDQogICJTQyBQYWRlcmJvcm4gMDciLCAiMS4gRlNWIE1haW56IDA1IiwgIkJheWVyIDA0IExldmVya3VzZW4iLCAiRkMgQmF5ZXJuIE3Dg8K8bmNoZW4iLA0KICAiQm9ydXNzaWEgRG9ydG11bmQiLCAiQm9ydXNzaWEgTcODwrZuY2hlbmdsYWRiYWNoIiwgIkVpbnRyYWNodCBGcmFua2Z1cnQiLA0KICAiRkMgQXVnc2J1cmciLCAiRkMgU2NoYWxrZSAwNCIsICJGb3J0dW5hIETDg8K8c3NlbGRvcmYiLCAiMS4gRkMgVW5pb24gQmVybGluIiwNCiAgIkhlcnRoYSBCU0MiLCAiUkIgTGVpcHppZyIsICJTQyBGcmVpYnVyZyIsICJUU0cgMTg5OSBIb2ZmZW5oZWltIiwNCiAgIjEuIEZDIEvDg8K2bG4iLCAiVmZMIFdvbGZzYnVyZyIsICJTViBXZXJkZXIgQnJlbWVuIg0KKQ0KDQpwcmVtaWVyTGVhZ3VlIDwtIGMoDQogICJBcnNlbmFsIiwgIkJvdXJuZW1vdXRoIiwgIkJyaWdodG9uICYgSG92ZSBBbGJpb24iLCAiQnVybmxleSIsDQogICJOb3J3aWNoIENpdHkiLCAiQ2hlbHNlYSIsICJDcnlzdGFsIFBhbGFjZSIsICJFdmVydG9uIiwgIlNoZWZmaWVsZCBVbml0ZWQiLA0KICAiQXN0b24gVmlsbGEiLCAiTGVpY2VzdGVyIENpdHkiLCAiTGl2ZXJwb29sIiwgIk1hbmNoZXN0ZXIgQ2l0eSIsDQogICJNYW5jaGVzdGVyIFVuaXRlZCIsICJOZXdjYXN0bGUgVW5pdGVkIiwgIlNvdXRoYW1wdG9uIiwgDQogICJUb3R0ZW5oYW0gSG90c3B1ciIsICJXYXRmb3JkIiwgIldlc3QgSGFtIFVuaXRlZCIsICJXb2x2ZXJoYW1wdG9uIFdhbmRlcmVycyINCiAgDQopDQoNCmxhbGlnYSA8LSBjKA0KICAiQXRobGV0aWMgQ2x1YiBkZSBCaWxiYW8iLCAiQXRsw4PCqXRpY28gTWFkcmlkIiwgIkNEIExlZ2Fuw4PCqXMiLA0KICAiRGVwb3J0aXZvIEFsYXbDg8KpcyIsICJGQyBCYXJjZWxvbmEiLCAiR2V0YWZlIENGIiwgDQogICJMZXZhbnRlIFVEIiwgIlJDIENlbHRhIiwgIlJDRCBFc3BhbnlvbCIsIA0KICAiUmVhbCBCZXRpcyIsICJSZWFsIE1hZHJpZCIsICJSZWFsIFNvY2llZGFkIiwgIlJlYWwgVmFsbGFkb2xpZCBDRiIsDQogICJTRCBFaWJhciIsICJTZXZpbGxhIEZDIiwgIlZhbGVuY2lhIENGIiwgIlZpbGxhcnJlYWwgQ0YiLA0KICAiQ0EgT3Nhc3VuYSIsIkdyYW5hZGEgQ0YiLCJSQ0QgTWFsbG9yY2EiDQopDQoNCnNlcmllYSA8LSBjKA0KICAiQXRhbGFudGEiLCJCb2xvZ25hIiwiQ2FnbGlhcmkiLCAiRmlvcmVudGluYSIsIkdlbm9hIiwNCiAgIkludGVyIiwiSnV2ZW50dXMiLCJMYXppbyIsIk1pbGFuIiwiTmFwb2xpIiwiUGFybWEiLCJSb21hIiwiU2FtcGRvcmlhIiwiU2Fzc3VvbG8iLCJTUEFMIiwNCiAgIlRvcmlubyIsIlVkaW5lc2UiLCJCcmVzY2lhIiwiTGVlY2UiLCJIZWxsYXMgVmVyb25hIg0KICANCikNCg0KDQpsaWd1ZTEgPC0gYygNCiAgIkFtaWVucyBTQyIsICJBbmdlcnMgU0NPIiwgIkFTIE1vbmFjbyIsICJBUyBTYWludC3Dg8KJdGllbm5lIiwgIkRpam9uIEZDTyIsICJGQyBNZXR6IiwNCiAgIkZDIE5hbnRlcyIsICJGQyBHaXJvbmRpbnMgZGUgQm9yZGVhdXgiLCAiTE9TQyBMaWxsZSIsICJNb250cGVsbGllciBIU0MiLCAiTsODwq5tZXMgT2x5bXBpcXVlIiwgDQogICJPR0MgTmljZSIsICJPbHltcGlxdWUgTHlvbm5haXMiLCJPbHltcGlxdWUgZGUgTWFyc2VpbGxlIiwgIlBhcmlzIFNhaW50LUdlcm1haW4iLCANCiAgIlJDIFN0cmFzYm91cmcgQWxzYWNlIiwgIkJyZXN0IiwgIlN0YWRlIGRlIFJlaW1zIiwgIlN0YWRlIFJlbm5haXMgRkMiLCAiVG91bG91c2UgRm9vdGJhbGwgQ2x1YiINCikNCnRlbXA9ZmlmYV9kYXRhICU8PiUgbXV0YXRlKExlYWd1ZSA9IGlmX2Vsc2UoY2x1YiAlaW4lIGJ1bmRlc2xpZ2EsICJCdW5kZXNsaWdhIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9lbHNlKGNsdWIgJWluJSBwcmVtaWVyTGVhZ3VlLCAiUHJlbWllciBMZWFndWUiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2Vsc2UoY2x1YiAlaW4lIGxhbGlnYSwgIkxhIExpZ2EiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfZWxzZShjbHViICVpbiUgc2VyaWVhLCAiU2VyaWUgQSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfZWxzZShjbHViICVpbiUgbGlndWUxLCAiTGlndWUgMSIsTkFfY2hhcmFjdGVyXykpKSkpLA0KICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgQ291bnRyeSA9IGlmX2Vsc2UoTGVhZ3VlID09ICJCdW5kZXNsaWdhIiwgIkdlcm1hbnkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9lbHNlKExlYWd1ZSA9PSAiUHJlbWllciBMZWFndWUiLCAiVUsiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2Vsc2UoTGVhZ3VlID09ICJMYSBMaWdhIiwgIlNwYWluIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9lbHNlKExlYWd1ZSA9PSAiU2VyaWUgQSIsICJJdGFseSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9lbHNlKExlYWd1ZSA9PSAiTGlndWUgMSIsICJGcmFuY2UiLCBOQV9jaGFyYWN0ZXJfKSkpKSkpICU+JSANCiAgZmlsdGVyKCFpcy5uYShMZWFndWUpKSAlPiUgbXV0YXRlX2lmKGlzLmZhY3RvciwgYXMuY2hhcmFjdGVyKCkpDQoNCg0Kcm0oYnVuZGVzbGlnYSwgcHJlbWllckxlYWd1ZSwgbGFsaWdhLCBzZXJpZWEsIGxpZ3VlMSkNCg0KYGBgDQoNCmBgYHtyfQ0KIyA1LiBQb3NpdGlvbiBDbGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShtYWdyaXR0cikNCiMgQ3JlYXRlIFBvc2l0aW9uIENsYXNzICMNCmRlZmVuY2UgPC0gYygiQ0IiLCAiUkIiLCAiTEIiLCAiTFdCIiwgIlJXQiIsICJMQ0IiLCAiUkNCIikNCm1pZGZpZWxkZXIgPC0gYygiQ00iLCAiQ0RNIiwiQ0FNIiwiTE0iLCJSTSIsICJMQU0iLCAiUkFNIiwgIkxDTSIsICJSQ00iLCAiTERNIiwgIlJETSIpDQoNCnRlbXAgJTw+JSBtdXRhdGUoQ2xhc3MgPSBpZl9lbHNlKHBsYXllcl9wb3NpdGlvbnMgJWluJSAiR0siLCAiR29hbCBLZWVwZXIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfZWxzZShwbGF5ZXJfcG9zaXRpb25zICVpbiUgZGVmZW5jZSwgIkRlZmVuZGVyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfZWxzZShwbGF5ZXJfcG9zaXRpb25zICVpbiUgbWlkZmllbGRlciwgIk1pZGZpZWxkZXIiLCAiRm9yd2FyZCIpKSkpDQoNCnJtKGRlZmVuY2UsIG1pZGZpZWxkZXIpDQpgYGANCg0KDQoNCiMgVG8gY2hhbmdlIHZhbHVlcyB0byBjaGFyYWN0ZXJzDQpgYGB7cn0NCiNGb3JtYXR0aW5nIG5vcyB0byBjdXJybmN5DQp2YWw8LSBmdW5jdGlvbih4KSB7DQogIGRwbHlyOjpjYXNlX3doZW4oDQogICAgICB4IDwgMWUzIH4gYXMuY2hhcmFjdGVyKHgpLA0KICAgICAgeCA8IDFlNiB+IHBhc3RlMChhcy5jaGFyYWN0ZXIoeC8xZTMpLCAiSyIpLA0KICAgICAgeCA8IDFlOSB+IHBhc3RlMChhcy5jaGFyYWN0ZXIoeC8xZTYpLCAiTSIpLA0KICAgICAgVFJVRSB+ICJUbyBiZSBpbXBsZW1lbnRlZC4uLiINCiAgKQ0KfQ0KdGVzdD12YWwodGVtcCR2YWx1ZV9ldXIpDQpgYGANCg0KYGBge3J9DQp2YWwxPC0gZnVuY3Rpb24oeSkgew0KICBkcGx5cjo6Y2FzZV93aGVuKA0KICAgICAgeSA8IDFlMyB+IGFzLmNoYXJhY3Rlcih5KSwNCiAgICAgIHkgPCAxZTYgfiBwYXN0ZTAoYXMuY2hhcmFjdGVyKHkvMWUzKSwgIksiKSwNCiAgICAgIHkgPCAxZTkgfiBwYXN0ZTAoYXMuY2hhcmFjdGVyKHkvMWU2KSwgIk0iKSwNCiAgICAgIFRSVUUgfiAiVG8gYmUgaW1wbGVtZW50ZWQuLi4iDQogICkNCn0NCnRlc3QxPXZhbDEodGVtcCR3YWdlX2V1cikNCg0KYGBgDQoNCmBgYHtyfQ0KdGVtcDE9dGVtcCAgJT4lIA0KICBtdXRhdGUoDQogICAgVmFsdWU9dmFsKHRlbXAkdmFsdWVfZXVyKSwNCiAgICBXYWdlcz12YWwxKHRlbXAkd2FnZV9ldXIpDQogICkNCmBgYA0KDQpgYGB7cn0NCiNjaG9vc2luZyBjdXJyZW5jcmllcyBhcyBldXJvcw0KdGVtcDEgJT4lIA0KICBkcGx5cjo6c2VsZWN0KFZhbHVlLFdhZ2VzKSAlPiUNCiAgZ3QoKSAlPiUNCiAgZm10X2N1cnJlbmN5KA0KICAgIGNvbHVtbnMgPSB2YXJzKFZhbHVlKSwNCiAgICBjdXJyZW5jeSA9ICJFVVIiDQogICkgJT4lDQogIGZtdF9jdXJyZW5jeSgNCiAgICBjb2x1bW5zID0gdmFycyhXYWdlcyksDQogICAgY3VycmVuY3kgPSAiRVVSIg0KICApDQpgYGANCg0KDQpgYGB7cn0NCiB0ZW1wMSAlPiUgYXJyYW5nZShQbGF5ZXIpICU+JSBtdXRhdGUoUGxheWVyID0gcGFzdGUwKGFzLmNoYXJhY3RlcihQbGF5ZXIpKSkNCmBgYA0KDQoNCg0KYGBge3J9DQp3cml0ZS5jc3YodGVtcDEsIkM6XFxVc2Vyc1xca3Jpc2huYVxcRGVza3RvcFxcUFJPSkVDVFxcMjAyMFNFUFRcXEZJRkEuY3N2IikNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCg0KDQpgYGB7cn0NCmRmPXJlYWQuY3N2KCJDOlxcVXNlcnNcXGtyaXNobmFcXERlc2t0b3BcXFBST0pFQ1RcXDIwMjBTRVBUXFxGSUZBLmNzdiIpDQpWaWV3KGRmKQ0KYGBgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KHBsb3RseSkNCg0KZmlnIDwtIHBsb3RfbHkoDQogICAgdHlwZSA9ICdzY2F0dGVycG9sYXInLA0KICAgIGZpbGwgPSAndG9zZWxmJw0KICApIA0KZmlnIDwtIHRlbXAxICU+JQ0KICBhZGRfdHJhY2UoDQogICAgciA9IGMoKSwNCiAgICB0aGV0YSA9IGMoJ0EnLCdCJywnQycsICdEJywgJ0UnLCAnQScpLA0KICAgIG5hbWUgPSB0ZW1wJFBsYXllcg0KICApIA0KZmlnIDwtIGZpZyAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHIgPSBjKDEuNSwgMTAsIDM5LCAzMSwgMTUsIDEuNSksDQogICAgdGhldGEgPSBjKCdBJywnQicsJ0MnLCAnRCcsICdFJywgJ0EnKSwNCiAgICBuYW1lID0gdGVtcCRQbGF5ZXINCiAgKSANCmZpZyA8LSBmaWcgJT4lDQogIGxheW91dCgNCiAgICBwb2xhciA9IGxpc3QoDQogICAgICByYWRpYWxheGlzID0gbGlzdCgNCiAgICAgICAgdmlzaWJsZSA9IFQsDQogICAgICAgIHJhbmdlID0gYygwLDEwMCkNCiAgICAgICkNCiAgICApDQogICkNCg0KZmlnDQpgYGANCg0KDQpgYGB7cn0NCg0KZmlnIDwtIHBsb3RfbHkoDQogICAgdHlwZSA9ICdzY2F0dGVycG9sYXInLA0KICAgIHIgPSBjKCA4OCw5NiksDQogICAgdGhldGEgPSBjKHRlbXAkb3ZlcmFsbCx0ZW1wJHBvdGVudGlhbCksDQogICAgZmlsbCA9ICd0b3NlbGYnDQogICkgDQpmaWcgPC0gZmlnICU+JQ0KICBsYXlvdXQoDQogICAgcG9sYXIgPSBsaXN0KA0KICAgICAgcmFkaWFsYXhpcyA9IGxpc3QoDQogICAgICAgIHZpc2libGUgPSBULA0KICAgICAgICByYW5nZSA9IGMoMCwxMDApDQogICAgICApDQogICAgKSwNCiAgICBzaG93bGVnZW5kID0gRg0KICApDQoNCmZpZw0KYGBgDQoNCg==